/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package bs.global.util;


import bs.empresa.rn.EmpresaRN;
import bs.global.excepciones.ExcepcionGeneralSistema;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import javax.ejb.EJB;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;

/**
 * @author Claudio
 * Clase para generar informes
 */
public abstract class InformeBase implements Serializable {

    @EJB private EmpresaRN empresaRN;

    protected  String  titulo;
    protected  String pathReporte;
    protected  Map parameters;
    protected  String nombreArchivo;

    public InformeBase() {

        parameters = new HashMap();
        
    }

    public abstract void validarDatos() throws ExcepcionGeneralSistema;
    public abstract void cargarParametros() throws ExcepcionGeneralSistema;

    public void imprimir(){

        try {
            validarDatos();
            cargarParametros();

            empresaRN.cargarDatosEmpresa(parameters);

            JasperReport masterReport = (JasperReport) JRLoader.loadObject(getClass().getClassLoader().getResourceAsStream(pathReporte));            

//            System.out.println(parameters);


            ReportFactory reportFactory = new ReportFactory();
            reportFactory.verReportePDF(masterReport, nombreArchivo, parameters);

        } catch (Exception e){
//          e.printStackTrace();
            JsfUtil.addErrorMessage("No se puede imprimir a pdf " + e.getMessage());
        }
    }
}
